<?php

namespace App\Models\Trip\TripOrderCosts\Repositories\Interfaces;

use App\Models\Orders\Repositories\Interfaces\OrdersInterface;
use App\Models\Passengers\Repositories\Interfaces\OrderPassengerInterface;
use App\Models\Trip\TripOrderCosts\TripOrderPassengerCost;
use Illuminate\Support\Collection;

interface TripOrderPassengerCostsRepositoryInterface
{

    public function addMore(array $costs);

    public function addOne(OrderPassengerInterface $passenger, array $data): TripOrderPassengerCost;

    public function updateOne(TripOrderPassengerCost $cost, array $data): bool;

    public function updatePaySnByOrder(OrdersInterface $order, string $pay_sn, array $types = []): bool;

    public function addPassengerSelectSeatCost(OrderPassengerInterface $passenger, array $cost): TripOrderPassengerCost;

    public function getOrderPassengerSelectSeatCost(OrderPassengerInterface $passenger): ?TripOrderPassengerCost;

    public function addByNewOrderPassengerTicketCost(OrderPassengerInterface $passenger, array $cost): bool;

    public function listByOrderPassengers(OrderPassengerInterface $passenger, array $condition = []): Collection;

    public function listOrderPassengerTicketCosts(OrderPassengerInterface $passenger): Collection;

    public function findOneOrderPassengerTicketCost(OrderPassengerInterface $passenger, string $pay_sn): ?TripOrderPassengerCost;
}